// 单独封装关于user的状态的模块
// 按需导入本地存储的方法
import { setToken, getToken, removeToken } from '@/utils/storage'
// vuex 和 本地存储
// 本地存储 可以单独完成token存储的 数据不是响应式，重新获取
// vuex 不能单独完成token的存储 一刷新页面, vuex中数据丢失状态 数据是响应式(组件js模块中要用到)
const state = {
  // token数据
  // tokenInfo: {}
  // tokenInfo: JSON.parse(localStorage.getItem('token')) || {}
  tokenInfo: getToken() || {}
}
const mutations = {
  // 赋值token的方法
  setTokenInfo (state, newTokenInfo) {
    // token存在vuex中
    state.tokenInfo = newTokenInfo
    // 也要存在本地存储中
    // localStorage.setItem('token', JSON.stringify(newTokenInfo))
    setToken(newTokenInfo)
  },
  // 删除tokenInfo
  removeTokenInfo (state) {
    state.tokenInfo = {}
    // 清除本地存储
    removeToken()
  }
}
const actions = {}
const getters = {}

export default {
  namespaced: true, // 开启命名空间, mutations actions getters 不会挂载到全局
  state,
  mutations,
  actions,
  getters
}
//  导出之后一定要挂载给store中index.js
